File: /var/www/vhosts/creativefellows.nl/subdomains/demo/httpdocs/printgarden/login/script/script copy.js
var vd;
var ckf = [];
var ckf_ct = 0;
document.observe("dom:loaded", function() {
var vd = new varData();
});
var field;
function ckEditor(textedit){
ckf[ckf_ct] = CKEDITOR.replace(textedit,{
toolbarGroups: [
{ name: 'basicstyles', groups: [ 'basicstyles', 'cleanup','list'] },
// { name: 'links', items: [ 'link','source'] },
{ name: 'insert' },
{ name: 'document', groups: [ 'mode', 'document', 'doctools' ] }
],
allowedContent:true
});
//CKEDITOR.config.height = 300;
CKFinder.setupCKEditor( ckf[ckf_ct], '../admin/ckfinder/','Upload');
// console.log(ckf_ct);
ckf_ct++;
}
var varData = Class.create({
initialize: function(){
this.isOpen = false;
this.maxCount = [];
this.countMax();
$$(".adres-toevoegen").invoke("observe","click",this.addAdres.bind(this));
$$(".preview-url").invoke("observe","click",this.updateUrl.bind(this));
$$(".order-form .input").invoke("observe","focus",this.checkValueLength.bind(this));
$$(".set").invoke("observe","blur",this.updateAmount.bind(this));
$$(".delete").invoke("observe","click",this.doLinkaction.bind(this));
$$(".update-max").invoke("observe","change",this.checkMaxAmount.bind(this));
if($("afronden-bestelling")) $("afronden-bestelling").observe("click",this.checkConfirm.bind(this));
$$(".selector a").invoke("observe","click",this.loadTemplate.bind(this));
$$(".colorpicker span").invoke("observe","click",this.selectColor.bind(this));
/* $$(".convertCMYK").each(function(el){
var cmyk_arr = el.down().id.split(".");
var hex = this.cmykToRGB(cmyk_arr[0],cmyk_arr[1],cmyk_arr[2],cmyk_arr[3]);
// console.log(hex);
el.setStyle({
"backgroundColor": hex,
"border": hex
});
}.bind(this));*/
this.autoGrowFields();
// focus on focus file upload
this.observeUpload();
// autocomplete
$$(".autocomplete").each(function(element){
this.autoComplete(element);
}.bind(this));
// save product to db
if($("save-product-before-order")){
this.fixButtons();
$("save-product-before-order").observe("click",this.ajaxSave.bind(this));
}
},
cmykToRGB: function(c,m,y,k) {
function padZero(str) {
return "000000".substr(str.length)+str
}
var cyan = (c * 255 * (1-k)) << 16;
var magenta = (m * 255 * (1-k)) << 8;
var yellow = (y * 255 * (1-k)) >> 0;
//console.log(cyan);
var black = 255 * (1-k);
var white = black | black << 8 | black << 16;
var color = white - (cyan | magenta | yellow );
return ("#"+padZero(color.toString(16)));
},
ajaxSave: function(event){
Event.stop(event);
var el = Event.element(event);
if($F("referentie") == ""){
$("referentie").addClassName("missed");
this.tooltip = new toolTip("Vul een refentie voor het product in");
this.tooltip.setPosition(el);
return;
}
var fv = $("vardata-form").serialize(true);
new Ajax.Request("pages/handle.saveproducts.php",{
parameters: fv,
onComplete: function(t){
var r = t.responseText.split("|*|");
if(r[0] == "ok"){
// set saved id
$("product_saved_id").value = r[1];
this.tooltip = new toolTip("Product opgeslagen");
this.tooltip.setPosition(el);
}
}.bind(this)
});
},
fixButtons: function(){
this.scrolltimer = null;
Event.observe(window, 'scroll', function() {
if(this.scrolltimer != null) return;
this.scrolltimer = setTimeout(function(){
var scroll = document.viewport.getScrollOffsets()
if(scroll["top"] > 120) this.fixedNav(scroll);
else $("save-product-before-order").writeAttribute("style",false);
if($F("product_page_count") == 1) this.positionPreviews(scroll["top"]);
this.scrolltimer = null;
}.bind(this),1000);
}.bind(this));
},
positionPreviews: function(scrolltop){
$$(".pdf-page .preview").each(function(prev){
var offset = prev.up().cumulativeOffset();
var prev_h = prev.getDimensions();
var group_h = prev.up().getHeight();
// if(scrolltop > offset.top) return;
//console.log((prev_h.height+50)+" > "+group_h);//+" > "+group_h);
if((prev_h.height+50) > group_h){
prev.writeAttribute("style",false);
return;
}
console.log(scrolltop+" < "+(prev_h.height+offset.top));
if(scrolltop > offset.top && scrolltop < (group_h+offset.top)){
prev.setStyle({
paddingTop: (scrolltop-offset.top +75)+"px"
});
}else{
prev.writeAttribute("style",false);
}
});
},
fixedNav: function(scroll){
$("save-product-before-order").setStyle({top: (scroll["top"]-120)+"px"});
},
autoComplete: function(element){
if(!$("global-results")){
var div = new Element("div",{'class':"autocomplete","id" : "autocomplete_choices"}).hide();
element.insert({after:div});
}
new Ajax.Autocompleter(element, "autocomplete_choices", "pages/handle.search-ajax.php", {
paramName: element.id,
minChars: 2,
afterUpdateElement: this.getSelectionId
});
},
getSelectionId: function(text,li) {
window.location.href = li.id;
},
observeUpload: function(){
$$(".order-form .browsefile").invoke("stopObserving","focus");
$$(".order-form .browsefile").invoke("observe","click",this.doUpload.bind(this));
},
doUpload: function(event){
var el = event.element();
this.isOpen = true;
el.stopObserving("focus");
field = el;
var finder = new CKFinder();
finder.basePath = '../';
finder.selectActionFunction = this.fileField;
finder.resourceType = "Upload";
finder.popup();
},
fileField: function(fileUrl,data,images){
var imgName = images[0].data['fileUrl'];
field.value = imgName.split("/").last();
field.next().value = imgName;
},
loadTemplate: function(event){
Event.stop(event);
var el = event.element();
// update actives
this.toggleActives(el);
var pars = el.id.split("|*|");
new Ajax.Request("pages/handle.vardata.php",{
parameters: "template_id="+pars[1]+"&page="+pars[0]+"&edit_id="+$F("product_edit"),
onComplete: function(t){
var r = t.responseText;
el.up(1).next().update(r);
$$(".preview-url").invoke("stopObserving","click");
$$(".preview-url").invoke("observe","click",this.updateUrl.bind(this));
this.observeUpload();
this.autoGrowFields();
//$("template_click_count").value = parseInt($F("template_click_count"))+1;
el.up(1).addClassName("selected-page-template");
//this.ajaxText(el.up(1).next().id);
$$(".colorpicker span").invoke("stopObserving","click");
$$(".colorpicker span").invoke("observe","click",this.selectColor.bind(this));
}.bind(this)
});
},
//ajaxText: function(loaded_div_id){
// $$("#"+ $(loaded_div_id) +" .texteditor").each(function(textedit){
// ckEditor(textedit);
// ckf_ct++;
// });
//},
autoGrowFields: function(){
$$(".autogrow").invoke("stopObserving","keydown");
$$(".autogrow").invoke("observe","keydown",this.resizeTextarea.bind(this));
//$$(".autogrow").invoke("observe","focus",this.cursorToBottom.bind(this));
$$(".autogrow").each(function(el){
this.resizeTextarea(null,el);
}.bind(this));
},
cursorToBottom: function(event){
var el = event.element();
el.value = el.value;
},
resizeTextarea: function(event,el){
if(event != null) var el = event.element();
var str = el.value;
var cols = el.cols;
var linecount = 0;
$A(str.split("\n")).each( function(l) {
linecount += Math.ceil( l.length / cols );
});
el.rows = linecount + 2;
},
countMax: function(){
$$(".set").each(function(el){
var pars = el.id.split("|*|");
var id = pars[0];
this.maxCount[id] = el.value;
}.bind(this))
},
checkMaxAmount: function(event){
var el = event.element();
var id = el.attributes.rel.value; // uid
var max = this.maxCount[id];
// console.log(max);
var totaal = 0;
//this.maxCount[id]["current"] = el.value;
$$("."+id).each(function(el){
//console.log(el.className);
totaal += parseInt($F(el));
}.bind(this));
// console.log("max="+max+" tot="+totaal);
if(totaal > max){
alert("Totaal aantal kan niet groter zijn dan "+max+". Verdeel de aantallen over de verschillende aflveradressen.");
el.options.selectedIndex = 0;
}
},
addAdres: function(event){
Event.stop(event);
var el = Event.element(event);
var fields = $("template-adres").innerHTML;
var div = new Element("div",{"class": "afleveradres","id":new Date().getMilliseconds()}).update('<div class="wrapper"><div class="adres-wrapper">'+fields+'</div></div>');
$("default-adres").insert({after:div});
$$("#"+div.id+" .input").each(function(el){
el.disabled = false;
});
$$(".delete-afleveradres").invoke("stopObserving","click");
$$(".delete-afleveradres").invoke("observe","click",this.removeAdres.bind(this));
$$(".update-max").invoke("stopObserving","change");
$$(".update-max").invoke("observe","change",this.checkMaxAmount.bind(this));
},
removeAdres: function(event){
Event.stop(event);
var el = event.element();
el.up(3).remove();
},
doLinkaction: function(event){
Event.stop(event);
var el = Event.element(event);
var pid = el.up(1).id.replace("li","");
var cn = el.className;
switch(cn){
case "delete":
var mesg = confirm("Weet je zeker dat je dit product wilt verwijderen?\n");
if (mesg==true) this.deleteProduct(pid);
break;
}
},
deleteProduct: function(pid){
new Ajax.Request('pages/handle.remove_basket.php',{
parameters: 'pid='+pid,
onComplete: function (r){
var count = r.responseText;
// //this.count.update(count)
new Effect.DropOut($("li"+pid),{
duration:0.5,
afterFinish: function(){
$("li"+pid).remove();
this.updateBasket()
$$("."+pid).each(function(el){
//console.log(el.className);
el.up().remove();
}.bind(this));
}.bind(this)
});
}.bind(this)
});
},
updateAmount: function(event){
var el = event.element();
var pars = el.id.split("|*|");
var id = pars[0];
var amount = parseFloat(pars[1]);
var price = parseFloat(pars[2]);
var db_id = parseFloat(pars[3]);
var start = parseFloat(pars[4]);
var type = el.hasClassName("default") ? "default" : "set";
new Ajax.Request("pages/staffel_product.php",{
parameters: "vardata_id="+db_id+"&amount="+el.value+"&id="+id+"&type="+type,
onComplete: function(t){
var data = JSON.parse(t.responseText);
// set max count in array
var checked = el.value.gsub(/[^0-9]/, '');
if(checked == "") checked = 1;
this.maxCount[id] = checked;
el.value = checked;
// do update
var total = (el.value*data.prijs)+start;
// reset count to max
$$("."+id).each(function(el){
el.value = 0;
}.bind(this));
$(id+"_std").value = checked;
// update totaalprijs
$("price"+id).update(this.formatPrice(total));
$("price"+id).attributes.rel.value = total;
// update itemprijs
$("itemprice"+id).update(this.formatPrice(parseFloat(data.prijs)));
$("itemprice"+id).attributes.rel.value = data.prijs;
//update totalen
this.updateBasket();
}.bind(this)
});
},
checkConfirm: function(event){
if(this.countProducts() == false){
alert("Het totaal bij de afleveradressen moet gelijk zijn aan het totaal aantal in de winkelwagen. \nVerdeel de aantal over de verschillende afleveradressen.");
Event.stop(event);
return false;
}
if($("order-ok").checked == false){
alert("U heeft nog niet aangeveven dat uw order compleet is.");
$("order-ok").up().setStyle({color: "red",fontWeight: "bold"});
Event.stop(event);
return false;
}
if(this.validateForm("bestelling-form") == false){
alert("U heeft niet alle verplichte velden zijn ingevuld.");
Event.stop(event);
return false;
}
},
validateForm :function(formid){
var inputs = $(formid).getInputs("text");
var check = true;
inputs.each(function(i){
if(i.hasClassName("required") && $F(i) == "" && i.disabled == false){
i.addClassName("missed");
check = false;
}else i.removeClassName("missed");
});
return check;
},
countProducts: function(){
var totals = true;
var items = $$("li.item");
items.each(function(item){
var id = item.id.replace("li","");
var max = this.maxCount[id];
var totaal = 0;
$$("."+id).each(function(el){
//console.log(el.className);
totaal += parseInt($F(el));
}.bind(this));
if(totaal < max) totals = false;
//console.log("max="+max+" tot="+totaal);
}.bind(this));
return totals;
},
updateBasket: function(){
var t = 0;
var admk = parseInt($F("adminkosten-klant"));
//console.log(admk);
$$(".item .totaalprijs").each(function(el){
// console.log(el.attributes.rel.value);
t += parseFloat(el.attributes.rel.value);
});
$("totaal-ex").update(this.formatPrice(t));
$("totaal-btw").update(this.formatPrice(0.21*(t+admk)));
$("totaal-totaal").update(this.formatPrice(1.21*(t + admk)));
$("bestelling-totaal").update(1.21*t + admk);
},
updateUrl: function(event){
Event.stop(event);
var el = event.element();
if($F("referentie") == ""){
$("referentie").addClassName("missed");
this.tooltip = new toolTip("Vul een refentie voor het product in");
this.tooltip.setPosition(el);
return;
}
var inputs = $$("#vardata-form .input");
inputs.each(function(i){
if(i.hasClassName("texteditor")){
console.log(i);
$(i).value = CKEDITOR.instances[i.id].getData();
}
}.bind(this));
var fv = $("vardata-form").serialize(true);
var preview = $("preview"+el.id);
preview.down(1).next().show();
$("preview-loader"+el.id).appear({duration:0.2});
new Ajax.Request("download",{
parameters: fv,
onComplete: function(t){
var r = this.getResponse(t);
if(r[0] == "ok"){
var update = '<a href="view-pdf?file='+r[1]+'&'+this.randomId()+'" target="_blank">Download pdf bestand</a>';
if(!$("dld-preview-pdf"+el.id)){
var dld = new Element("div",{"class":"clear","style": "font-size:16px;","id":"dld-preview-pdf"+el.id}).hide().update(update);
preview.insert({bottom:dld});
}else $("dld-preview-pdf"+el.id).hide().update(update);
// pdf prevriew link
$("dld-preview-pdf"+el.id).appear({duration:0.5});
// update post data with stamped pdf
$("product_preview_pdf").value = r[1];
// create new preview from image
this.updatePreviewImg(r[1],fv["img_preview_"+el.id],el.id,$F("preview_page_"+el.id));
}else{
alert("Er is een fout opgetreden bij het verwerken van de data.");
}
var gen_pages = $$(".selected-page-template").length;
if(gen_pages == $F("product_page_count")){
$("order-product-btn").show();
}
}.bind(this)
});
},
updatePreviewImg: function(file_url,img_url,id,pdf_page){
new Ajax.Request("preview",{
parameters: "pdf="+file_url+"&img="+img_url+'&p='+(pdf_page-1),
onComplete: function(t){
//console.log(id);
var r = this.getResponse(t);
if(r[0] == "ok"){
var imgSrc = img_url+"?"+this.randomId();
$("pdf-preview-img"+id).src = imgSrc;
$("pdf-preview-img"+id).next().href = imgSrc;
}
$("preview-loader"+id).fade({duration:0.2});
}.bind(this)
});
},
checkValueLength: function(event){
var el = event.element();
if(el.hasClassName("browsefile") || !el.attributes.rel) return;
var max = el.attributes.rel.value;
var msg = false;
if(max == 0) return;
el.observe("keyup",function(){
if(el.value.length > max){
el.value = el.value.substr(0,max);
if(msg == true) return;
if(!$("max-length-msg")){
var div = ($("max-length-msg")) ? $("max-length-msg") : new Element("div",{"id":"max-length-msg"}).update("<p class='error'>Uw tekst mag niet langer zijn dan "+max+" tekens</p>");
el.insert({after:div});
msg = true;
}else{
var div = $("max-length-msg");
div.show();
}
setTimeout(function(){
div.hide();
msg = false;
}.bind(this),5000)
}
});
},
getResponse: function(t){
var r = t.responseText;
var p = r.split("|*|");
if(p[0]== "ok") return p
else return false;
},
randomId: function(){
var length = 20;
var chars = '0123456789abcdefghiklmnopqrstuvwxyz'.split('');
if (! length) {
length = Math.floor(Math.random() * chars.length);
}
var str = '';
for (var i = 0; i < length; i++) {
str += chars[Math.floor(Math.random() * chars.length)];
}
return str;
},
formatPrice: function(str){
return "€ "+str.toFixed(2).replace(".",",");
},
toggleActives: function(el){
var parent = el.up(1).id;
$$("#"+parent+" a").invoke("removeClassName","active");
el.addClassName("active");
},
selectColor: function(event){
Event.stop(event);
var el = Event.element(event);
this.toggleActives(el.up());
el.addClassName("active");
el.up(2).next().value = el.id;
}
});
var toolTip = Class.create({
initialize: function(tip) {
this.delay = 3000;
if($('toolTip')) return;
$$("body").first().insert( new Element('div',{ id: 'toolTip' }).hide());
this.tip = tip;
this.tipDiv = $('toolTip');
//this.tipDiv.hide();
this.tipDiv.update(this.tip);
this.showTip();
},
showTip: function(){
new Effect.Appear(this.tipDiv,{duration:0.3,delay:0});
//setTimeout(function(){
// new Effect.Highlight(this.tipDiv,{ startcolor: '#3399cc',endcolor: '#ffffff',delay:0.5});
//}.bind(this),500);
//new Effect.Appear(this.tipDiv,{duration:0.3, delay:0.5});
this.timer = setTimeout(function(){
this.fadeTip();
}.bind(this), this.delay );
},
onPageTip: function(tip_element){
this.tipDiv = tip_element;
this.tipDiv.setStyle({top:"40%"})
new Effect.Appear(this.tipDiv,{duration:0.3,delay:0.5});
this.timer = setTimeout(function(){
this.fadeTip();
}.bind(this), this.delay );
},
fadeTip: function(){
new Effect.Fade(this.tipDiv,{duration:0.3});
this.timer = setTimeout( function(){
this.tipDiv.remove();
}.bind(this), 300);
},
cancelTip: function(){
if(!this.timer) return;
clearTimeout(this.timer);
this.tipDiv.remove();
},
setPosition: function(element){
var pos = element.cumulativeOffset();
var x = pos[1];
var y = pos[0];
this.tipDiv.setStyle({
position: 'absolute',
top: (element.getHeight()+x+16)+'px',
left: (y+(element.getWidth()/2)) + 'px',
marginLeft: -(element.getWidth()/2)+"px",
width: 'auto'
});
}
});